import Scanner from "./Scanner";

/**
 * 将模板字符串转变为数组
 * @param templateStr
 */
export default function parseTemplateToTokens(templateStr) {
    var tokens = [];
    // 创建扫描器
    var scanner = new Scanner(templateStr);
    var words;
    while (!scanner.eso()){
        // 收集开始标记出现之前的文字
        words = scanner.scanUtil('{{');
        // 存入tokens
        // 去除空格
        let isIndJJH = '';
        let _words = '';
        for(let i = 0 ;i<words.length;i++){
            // 判断是否在标签内
            if(words[i] == '<'){
                isIndJJH = true;
            }else if(words[i] == '>'){
                isIndJJH = false;
            }
            // 如果这项不是空格，拼接上
            if(!/\s/.test(words[i])){
                _words += words[i]
            }else{
                // 如果这项是空格，只有当它在标签内部时，才拼接上
                if(isIndJJH){
                    _words += " "
                }
            }
        }
        if (words != '')tokens.push(['text',_words]);
        // 过{{
        scanner.scan('{{')
        // 手机结束标记出现之前的文字
        words = scanner.scanUtil('}}')
        // 存入tokens
        if (words != ''){
            if(words[0] == '#'){
                tokens.push(['#',words.substring(1)])
            }else if(words[0] == '/'){
                tokens.push(['/',words.substring(1)])
            }else {
                tokens.push(['name',words])
            }
        }
        // 过}}
        scanner.scan('}}')
    }
    return tokens;
}
